package utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.channels.Channel;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
import java.util.Properties;

/**
 * sftp工具类
 */
public class SftpUtil {
//
//    static Session sshSession = null;
//
//    public static ChannelSftp getConnectIP(String host, String sOnlineSftpPort,
//                                           String username, String password){
//        int port = 0;
//        if (!"".equals(sOnlineSftpPort) && null != sOnlineSftpPort){
//            port = Integer.valueOf(sOnlineSftpPort);
//        }
//        ChannelSftp sftp = null;
//        try {
//            JSch jsch = new JSch();
//            jsch.getSession(username, host, port);
//            sshSession = jsch.getSession(username, host, port);
//            sshSession.setPassword(password);
//            Properties sshConfig = new Properties();
//            sshConfig.put("StringHostKeyChecking", "no");
//            sshSession.setConfig(sshConfig);
//            sshSession.connect();
//            Channel channel = sshSession.openChannel("sftp");
//            channel.connect();
//            sftp = (ChannelSftp)channel;
//        }catch (Exception e){
//            System.out.println("连接sftp失败");
//            e.printStackTrace();
//        }
//        System.out.println("连接sftp成功");
//        return sftp;
//    }
//
//    /**
//     * 上传
//     *
//     */
//    public static void upload(String directory, String uploadFile, ChannelSftp sftp){
//        try {
//            //检查路径
//            if (!isExist(sftp, directory)){
//                System.out.println("创建sftp服务器失败：" + directory);
//                return;
//            }
//            sftp.cd(directory);
//            File file = new File(uploadFile);
//            sftp.put(new FileInputStream(file), file.getName());
//            System.out.println("上传成功");
//        }catch (IOException e){
//            System.out.println(e.getCause());
//        }finally{
//            if (sftp.isConnected()){
//                sshSession.disconnect();
//                sftp.disconnect();
//            }
//        }
//    }
//
//    /**
//     * 判断文件是否存在
//     */
//    public static boolean isExist(ChannelSftp sftp, String filePath){
//        String paths[] = filePath.split("\\/");
//        String dir = paths[0];
//        for (int i = 0; i < paths.length - 1; i++) {
//            dir = dir + "/" + paths[i + 1];
//            try {
//                sftp.cd(dir);
//            }catch(SftpException e){
//                if (sftp.SSH_FX_NO_SUCH_FILE == e.id){
//                    try {
//                        sftp.mkdir(dir);
//                    }catch(SftpException e1){
//                        e1.printStackTrace();
//                        return false;
//                    }
//                }
//            }
//        }
//        return true;
//    }
//
//    /**
//     * 下载
//     */
//    public static void download(String directory, String downloadFile,
//                                String saveFile, ChannelSftp sftp){
//        try {
//            String src = directory + File.separator + downloadFile;
//            String dst = saveFile + File.separator + downloadFile;
//            System.out.println("开始下载， sftp服务器路径：[" + src + "]目录服务器路径：["+dst+"]");
//            sftp.get(src, dst);
//            System.out.println("下载成功");
//        }catch (Exception e ){
//            e.printStackTrace();
//        }finally {
//            if (sftp.isConnected()){
//                sshSession.disconnect();
//                sftp.disconnect();
//            }
//        }
//
//    }
//
//    /**
//     * 查看
//     */
//    public static List<String> check(String directory, ChannelSftp sftp){
//        List<String> fileList = new ArrayList<>();
//        try {
//            sftp.cd(directory);
//            ListIterator a = sftp.ls(directory).listIterator();
//            while(a.hasNext()){
//                fileList.add((String) a.next());
//            }
//        }catch (Exception e){
//            e.printStackTrace();
//        }finally {
//            if (sftp.isConnected()){
//                sshSession.disconnect();
//                sftp.disconnect();
//            }
//        }
//        return fileList;
//    }
//
//    /**
//     * 删除
//     */
//    public static void remove(String directory, String deleteFile, ChannelSftp sftp){
//        try {
//            sftp.cd(directory);
//            sftp.rm(deleteFile);
//        }catch (Exception e){
//            e.printStackTrace();
//        }finally{
//            if (sftp.isConnected()){
//                sshSession.disconnect();
//                sftp.disconnect();
//            }
//        }
//    }
//
//    public static void main(String[] args) {
//        ChannelSftp ftp = getConnectIP("", "", "", "");
//        //上传
//        upload("sftpFile/data", "E://34.txt", ftp);
//        //下载
//        download("sftpFile/data", "23.txt", "D://", ftp);
//    }
}
